nanopyx

Logo

Actively being developed with stable releases

PyPI Python Version Downloads Docs License Tests Contributors GitHub stars GitHub forks DOI

Nanoscopy Python library (NanoPyx, the successor to NanoJ) - focused on light microscopy and super-resolution imaging


What is the NanoPyx πŸ”¬ Library?

NanoPyx is a library specialized in the analysis of light microscopy and super-resolution data. It is a successor to NanoJ, which is a Java library for the analysis of super-resolution microscopy data.

NanoPyx focuses on performance, by heavily exploiting cython aided multiprocessing and simplicity. It implements methods for the bioimage analysis field, with a special emphasis on those developed by the Henriques Laboratory. It will be distributed as a Python Library and also as Codeless Jupyter Notebooks, that can be run locally or on Google Colab, and as a napari plugin.

You can read more about NanoPyx in our preprint.

Currently it implements the following approaches:

  • A reimplementation of the NanoJ image registration, SRRF and Super Resolution metrics
  • More to come soonβ„’

if you found this work useful, please cite: preprint and DOI

Short Video Tutorials

What is NanoPyx? How to use NanoPyx in Google Colab?

Codeless jupyter notebooks available:

Category Method Last test Notebook Colab Link
Registration Channel Registration βœ… by ADB (13/08/23) Jupyter Notebook Open in Colab
Registration Drift Correction βœ… by ADB (13/08/23) Jupyter Notebook Open in Colab
Quality Control Image fidelity and resolution metrics βœ… by ADB (13/08/23) Jupyter Notebook Open in Colab
Super-resolution SRRF βœ… by ADB (13/08/23) Jupyter Notebook Open in Colab
Super-resolution eSRRF βœ… by BMS (11/08/23) Jupyter Notebook Open in Colab
Tutorial Notebook with Example Dataset βœ… by ADB (13/08/23) Jupyter Notebook Open In Colab

napari plugin

NanoPyx is also available as a napari plugin, which can be installed via pip:

pip install napari-nanopyx

Installation

NanoPyx is compatible and tested with Python 3.9, 3.10, 3.11 in MacOS, Windows and Linux. Installation time depends on your hardware and internet connection, but should take around 5 minutes.

You can install NanoPyx via [pip]:

pip install nanopyx

If you want to install with support for Jupyter notebooks:

pip install nanopyx[jupyter]

or if you want to install with all optional dependencies:

pip install nanopyx[all]

To install latest development version:

pip install git+https://github.com/HenriquesLab/NanoPyx.git

Notes for Mac users

If you wish to compile the NanoPyx library from source, you will need to install the following dependencies:

  • Homebrew from https://brew.sh/
  • gcc, llvm and libomp from Homebrew through the command:
brew install gcc llvm libomp

Run in jupyterlab within a docker container

docker run --name nanopyx1 -p 8888:8888 henriqueslab/nanopyx:latest

Usage

Depending on your preferences and coding proficiency you might be using NanoPyx differently.

  • If you are using Jupyter Notebooks or Google Colab notebooks check out our video tutorial
  • If you are using our napari plugin check out the official napari tutorial and stay tuned for more!
  • If you prefer to use the Python library and take full advantage of the Liquid Engine flexibility, check out our Liquid Engine templates and our official documentation.
    • Simple Liquid Engine templates here and here
    • Fully fledged Liquid Engine templates here and here

Contributing

Contributions are very welcome. Please read our Contribution Guidelines to know how to proceed.

License

Distributed under the terms of the [CC-By v4.0] license, "NanoPyx" is free and open source software

Issues

If you encounter any problems, please [file an issue] along with a detailed description.

Development at a glance

Repography logo / Structure

Structure

 1"""
 2.. include:: ../../README.md
 3"""
 4
 5import os
 6
 7from . import _version, core, data, methods, liquid  # noqa: F401
 8
 9__version__ = _version.get_versions()["version"]
10
11# Get the user's home folder
12__home_folder__ = os.path.expanduser("~")
13__config_folder__ = os.path.join(__home_folder__, ".nanopyx")
14if not os.path.exists(__config_folder__):
15    os.makedirs(__config_folder__)
16
17from .__agent__ import Agent  # noqa: E402
18
19
20# TODO: allow benchmarking of only specific implementations
21# ?: provide user interface to enable/disable run types?
22# TODO: provide parallelized batch processing